package com.promotores;

import java.io.IOException;
import java.util.List;

import org.json.JSONException;

import com.promotores.util.Parametros;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;

public class ActivityListarPromociones extends Activity implements OnClickListener, OnItemClickListener{
	ListView lista;
	List<BeanPromocion> listaPromocion;
	ImageButton buscar;
	int flag_guardar;
	int idTipoPromocion;
	String strIdEvento;
	String nombEvento;
	int idSeleccionado;
	GestorPromocion gestorPromocion = new GestorPromocion(this);
	long itemSeleccionado;
	int idLocalSelec;
	String fechaIni;
	String fechaFin;
	
	/**
	 * @see android.app.Activity#onCreate(Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		Button btnNuevaPromocion;
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.pr_lista_promociones);
		strIdEvento = getIntent().getStringExtra("idEvento");
		nombEvento = getIntent().getStringExtra("nombEvento");
		if (nombEvento==null) nombEvento=Parametros.getCurrent_event();
		TextView txtTitulo = new TextView(this); 
		txtTitulo = (TextView)findViewById(R.id.txtTitulo);
		txtTitulo.setText("Evento: "+nombEvento);
		
		fechaIni = getIntent().getStringExtra("fechaini");
		fechaFin = getIntent().getStringExtra("fechafin");	
		Log.e("a","1");
		String idEvento_aux = "";
		lista = (ListView) findViewById(R.id.lvPromociones);
		GestorPromocion dbPromocion = new GestorPromocion(this);
		//simulación de data
		int cant_promo = dbPromocion.getPromocionCount();
		Log.e("promo",String.valueOf(cant_promo));
		List<BeanPromocion> listaPromociones = dbPromocion.getAllPromocion(Integer.parseInt(strIdEvento));
		for (int i=0;i<listaPromociones.size();i++){
			idTipoPromocion = listaPromociones.get(i).getTipoPromocion().getId();
			GestorTipoPromocion dbTipoPromocion = new GestorTipoPromocion(this);
			BeanTipoPromocion bTipoPromocion = dbTipoPromocion.getTipoPromocion(idTipoPromocion);
			listaPromociones.get(i).setTipoPromocion(bTipoPromocion);
		}
		AdapterPromocion adapter = new AdapterPromocion(listaPromociones, this);
		
		lista.setAdapter(adapter);
		lista.setOnItemClickListener(this);
		
		ImageButton offline = (ImageButton)findViewById(R.id.imgOfflineMode);
        offline.setOnClickListener(this);
        if (Parametros.isOffline_mode()){
        	offline.setVisibility(View.VISIBLE);
        }
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		if (v.getId() == R.id.btnNuevaPromocion){
			Intent intent = new Intent();
			Log.e("idEVento", strIdEvento);
			intent.putExtra("idEvento", strIdEvento);
			intent.putExtra("fechaini",fechaIni);
			intent.putExtra("fechafin",fechaFin);
			intent.putExtra("nombEvento", nombEvento);
			intent.setClass(this, ActivityListarTipoPromocion.class);
			startActivity(intent);
		}
		if (v.getId() == R.id.btnFinalizar){
			Intent intent = new Intent();
			intent.setClass(this, ActivityAprobarEvento.class);
			startActivity(intent);
		}
	}

	DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
	    @Override
	    public void onClick(DialogInterface dialog, int which) {
	        switch (which){
	        case DialogInterface.BUTTON_POSITIVE:
	        	if (flag_guardar == 1){
	        		Intent intent = new Intent();
	            	intent.setClass(getApplicationContext(), ActivityAprobarEvento.class);
	            	startActivity(intent);
	            	finish();
	        	}
	        	else {	     
	        		BeanPromocion promo = gestorPromocion.getPromocion(idSeleccionado);
	        		if (promo.getSaved().compareTo("1") == 0){
		        		gestorPromocion.deletebyId(idSeleccionado);
		        		gestorPromocion.setSavedbyId(idSeleccionado, "0");
		        		gestorPromocion.deletebyId(idSeleccionado);
		        		JsonPromocion jPromocion = new JsonPromocion();
		        		try {
							int result = jPromocion.postDeleted(idSeleccionado);
							Parametros.setOffline_mode(true);
							if (result!=0){ 
								gestorPromocion.setSavedbyId(idSeleccionado, "1");
								Parametros.setOffline_mode(false);
							}
							if (result==0 && !isNetworkAvailable())
								Toast.makeText(getApplicationContext(), "Modo Offline Activado\nNo hay conexión disponible", Toast.LENGTH_LONG).show();
							
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (JSONException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
		        		//gestorPromocion.deletePromocion(promocionSel);
	        		}else{
	        			gestorPromocion.deleteFisicoById(idLocalSelec);
	        		}
	        		onRestart();	        		
	        	}
	            break;

	        case DialogInterface.BUTTON_NEGATIVE:
	            //No button clicked
	            break;
	        }
	    }
	};

	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
		// TODO Auto-generated method stub
		BeanPromocion promo = (BeanPromocion)arg0.getItemAtPosition(arg2);
		itemSeleccionado=arg0.getSelectedItemId();
		idSeleccionado=promo.getId();
		idLocalSelec= promo.getIdLocal();
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage("¿Desea eliminar la promoción?").setPositiveButton("Yes", dialogClickListener)
	    .setNegativeButton("No", dialogClickListener).show();
	}

//	@Override
//    public boolean onKeyDown(int keyCode, KeyEvent event)  {
//        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
//            // do something on back.
//        	//Aqui hay que preguntar si desea guardar antes de salir..
//        	flag_guardar = 1;
//        	AlertDialog.Builder builder = new AlertDialog.Builder(this);
//    		builder.setMessage("¿Desea guardar los cambios?").setPositiveButton("Yes", dialogClickListener)
//    	    .setNegativeButton("No", dialogClickListener).show();
//            return true;
//        }
//        return super.onKeyDown(keyCode, event);
//    }
//	
	
	@Override
	public void onRestart(){
		super.onRestart();
		Intent intent = new Intent();
		intent.setClass(this,ActivityListarPromociones.class);
		intent.putExtra("idEvento", strIdEvento);
		intent.putExtra("fechaini",fechaIni);
		intent.putExtra("fechafin",fechaFin);
		startActivity(intent);
		this.finish();
	}

	private boolean isNetworkAvailable() {
	    ConnectivityManager connectivityManager 
	          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
	    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
	    return activeNetworkInfo != null;
	}
	
	@Override
	public void onResume(){
		super.onResume();
		if (Parametros.isOffline_mode()){
			ImageButton offline = (ImageButton)findViewById(R.id.imgOfflineMode);
			offline.setVisibility(View.VISIBLE);
			offline.invalidate();
        }
	}
}
